#include <iostream>
#include <vector>
using namespace std;

int main()
{
        int n, m, k;
        cin >> n >> m >> k;
        vector<int> pos(n + 1, 0);
        for(int i = 1; i <= n; i++){
                cin >> pos[i];
        }
        vector<vector<int>> gh(m + 1, vector<int>(m + 1, INT32_MAX));
        for(int i = 0; i < k; i++){
                int u, v, d;
                cin >> u >> v >> d;
                gh[u][v] = d;
                gh[v][u] = d;
        }

        for(int i = 1; i <= m; i++){
                gh[i][i] = 0;
        }

        for(int k = 1; k <= m; k++){
                for(int i = 1; i <= m; i++){
                        for(int j = 1; j <= m; j++){
                                if(gh[i][k] != INT32_MAX && gh[k][j] != INT32_MAX){
                                        gh[i][j] = min(gh[i][j], gh[i][k] + gh[k][j]);
                                }
                        }
                }
        }

        int dis = INT32_MAX;
        int ans = 0;
        for(int i = 1; i <= m; i++){
                int d = 0;
                for(int j = 1; j <= n; j++){
                        d += gh[i][pos[j]];
                }
                if(d < dis){
                        dis = d;
                        ans = i;
                }
        }
        cout<<dis<<endl;
        return 0;
}